package com.markerhub.exception;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 服务器抛出（接口）异常类
 *
 * @author Ma Xiaofeng
 * @date : Created in 2021/11/16
 **/
@EqualsAndHashCode(callSuper = true)
/*
       此注解会生成equals(Object other) 和 hashCode()方法。
       它默认使用非静态，非瞬态的属性
       可通过参数exclude排除一些属性
       可通过参数of指定仅使用哪些属性
       它默认仅使用该类中定义的属性且不调用父类的方法
       可通过callSuper=true解决上一点问题。让其生成的方法中调用父类的方法
 */
@Data
public class ApiException extends RuntimeException{
    private static final long serialVersionUID = 1L;

    /**
     * 错误码
     */
    protected Integer errorCode;
    /**
     * 错误信息
     */
    protected String errorMsg;

    public ApiException() {
        super();
    }

    public ApiException(String errorMsg) {
        super(errorMsg);
        this.errorMsg = errorMsg;
    }

    public ApiException(Integer errorCode, String errorMsg) {
        super(errorCode.toString());
        this.errorCode = errorCode;
        this.errorMsg = errorMsg;
    }

    public ApiException(Integer errorCode, String errorMsg, Throwable cause) {
        super(errorCode.toString(), cause);
        this.errorCode = errorCode;
        this.errorMsg = errorMsg;
    }


    public Integer getErrorCode() {
        return errorCode;
    }

    public void setErrorCode(Integer errorCode) {
        this.errorCode = errorCode;
    }

    public String getErrorMsg() {
        return errorMsg;
    }

    public void setErrorMsg(String errorMsg) {
        this.errorMsg = errorMsg;
    }

    @Override
    public Throwable fillInStackTrace() {
        return this;
    }
}
